package file;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

/** 读文件
 * Created with IntelliJ IDEA.
 * Description:
 * User: 张杰
 * Date: 2022-04-18
 * Time: 21:12
 */
public class Demo4 {
    public static void main(String[] args) {
        /*try {
            //读操作有很多失败的可能,没有权限,文件在读的过程中被删除都是有可能的
            //1.创建对象,也是打开文件
            InputStream inputStream = new FileInputStream("d:/test.txt");
            //2,尝试一个一个字节的读,把整个文件都读完
            while (true) {
                int b = inputStream.read();
                if(b == -1) {
                    //读到文件末尾
                    break;
                }
                //3.读完之后要关闭文件,释放资源
                System.out.println(b);
            }
            inputStream.close();
        } catch (IOException e) {//IOException合并了其他异常
            e.printStackTrace();
        }*/

        //需要符合一定的条件才放到try()中,实现Closeable这个interface,所有流对象,都实现Closeable,所以就可以直接放
        try(InputStream inputStream = new FileInputStream("d:/test.txt")) {
            while (true) {
                int b = inputStream.read();
                if (b == -1) {
                    //读到文件末尾
                    break;
                }
                System.out.println(b);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        //一次读多个字节
        try(InputStream inputStream = new FileInputStream("d:/test.txt")) {
            while (true) {
                byte[] buffer = new byte[1024];
                int len = inputStream.read(buffer);//这个操作是把读出来的结果放到buffer这个数组当中了
                if(len == -1) {
                   break;
                }
                for (int i = 0; i < len; i++) {
                    System.out.println(buffer[i]);
                }
            }
        }catch (IOException e) {
            e.printStackTrace();
        }
    }
}
